﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AccesoBD;
using System.Data.SqlClient;
using CapaLogica.CL.UtilidadesGenerales;

namespace CapaLogica.CL.ComentarioEntrada
{
    public class ComentarioEntradaPersistente
    {
        private AcessoBD _acceso;

        internal ComentarioEntradaPersistente()
        {
            _acceso = new AcessoBD();
        }


        internal void crearComentarioEntrada(int pIdEntrada, String pTexto, int pIdUsuario)
        {
            Parametros[] parametros = new Parametros[3];
            String sql = @"insert into dbo.T_Comentario_Entrada(comentario_entrada, id_entrada, id_usuario)
                                values(param1, param2, param3) ";

            parametros[0] = new Parametros(pTexto , "param1");
            parametros[1] = new Parametros(pIdEntrada, "param2");
            parametros[2] = new Parametros(pIdUsuario, "param3");

            try
            {
                int comentario = _acceso.executeSQLInsert(sql, parametros);

                //BITACORA
                Modulo.insertarBitacora(pIdUsuario , "Creación de un nuevo comentario de una entrada", pIdEntrada, 19, 1);
                //---------------
      

            }
            catch (Exception ex)
            {
                throw ex;
            }

        }

        internal List<EsComentarioEntrada> listarComentariosEntrada(int pidEntrada)
        {
            List<EsComentarioEntrada> comentarios = new List<EsComentarioEntrada>();
            DateTime fechaFin = DateTime.MinValue;

            EsComentarioEntrada comentario;
            string psp = @"dbo.sp_listar_comentarios_entrada";

            Parametros[] parametros = new Parametros[1];
            parametros[0] = new Parametros(pidEntrada, "idEntrada");

            try
            {
                SqlDataReader reader = _acceso.execute_SP_Consulta(psp, parametros);

                while (reader.Read())
                {
                    if (!reader.IsDBNull(4))
                    {
                        fechaFin = reader.GetDateTime(4);
                    }


                    comentario = new EsComentarioEntrada(reader.GetInt32(0)+"", reader.GetString(1), reader.GetDateTime(2).ToShortDateString(),
                                                        reader.GetBoolean(3),fechaFin.ToShortDateString(), reader.GetInt32(5)+""
                                                        , reader.GetString(6), reader.GetString(7));
                    comentarios.Add(comentario);
                }
                reader.Close();

                return comentarios;

            }
            catch (Exception ex)
            {
                throw ex;
            }

        }


        public void asignarCalificacionEntrada(int pIdUsuario, int pIdEntrada, int pNota)
        {
            String sql = @"Insert into dbo.T_Notas_Entrada(id_entrada, nota, id_usuario) values(param1, param2, param3)";

            Parametros[] parametros = new Parametros[2];
            parametros[0] = new Parametros(pIdEntrada, "param1");
            parametros[1] = new Parametros(pNota, "param2");
            parametros[1] = new Parametros(pIdUsuario, "param3");

            try
            {
                _acceso.executeSQL(sql, parametros);
                Modulo.insertarBitacora(pIdUsuario, "Asignación de nota a una entrada.", pIdEntrada, 20, 3);
            }
            catch (Exception ex)
            {

                throw ex;
            }
        }

        internal void asignarCalificacionEntradaBlog(int pidEntrada, double pnota, int pUsuario)
        {
            int pidNota = 0;
            Parametros[] parametros = new Parametros[3];

            String sql = @"insert into dbo.T_Notas_Entrada (id_entrada, nota, id_usuario)
                             values(param1, param2, param3) ";

            parametros[0] = new Parametros(pidEntrada, "param1");
            parametros[1] = new Parametros(pnota, "param2");
            parametros[1] = new Parametros(pUsuario, "param3");
            try
            {
                pidNota = _acceso.executeSQLInsert(sql, parametros);
                Modulo.insertarBitacora(pUsuario, "Asignacion de una nota a la entrada de un Blog", pidNota, 10, 1);
            }
            catch (Exception ex)
            {
                throw ex;
            }

        }


        internal void eliminarComentarioEntrada(int pidComentario, int pIdusuario)
        {
            try
            {
                String sql = @"delete dbo.T_Comentario_Entrada     
					            where id = param1";

                Parametros[] parametros = new Parametros[1];
                parametros[0] = new Parametros(pidComentario, "param1");

                _acceso.executeSQL(sql, parametros);

                Modulo.insertarBitacora(pIdusuario, "Eliminación de Comentario de Entrada", pIdusuario, 8, 3);
            }
            catch (Exception ex)
            {

                throw ex;
            }
        }
    }
}
